home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 4
/
United Public Domain Gold 4.iso
/
fredfish
/
ff.0773.dms
/
ff.0773.adf
/
Enforcer
/
LawBreaker.asm
< prev
next >
Wrap
Assembly Source File
|
1992-12-05
|
6KB
|
157 lines
******* LawBreaker ************************************************************
*
* NAME
* LawBreaker - A quicky test of Enforcer
*
* SYNOPSIS
* This is a quick test of Enforcer and its reporting abilities.
*
* FUNCTION
* This program is used to make sure that Enforcer is correctly
* installed and operating. LawBreaker works from either the CLI
* or Workbench. It will try to read and write certain memory
* areas that will cause an Enforcer hit or four.
*
* INPUTS
* Just run it...
*
* RESULTS
* When running Enforcer, you will see some output from Enforcer.
* Output on a 68030 machine would look something like this:
*
*WORD-WRITE to 00000000 data=0000 PC: 0783AC6A
*USP: 078CAAEC SR: 0004 SW: 0729 (U0)(-)(-) TCB: 078AADF8
*Data: DDDD0000 DDDD1111 DDDD2222 DDDD3333 DDDD4444 DDDD5555 DDDD6666 DDDD7777
*Addr: AAAA0000 AAAA1111 AAAA2222 AAAA3333 AAAA4444 AAAA5555 07800804 --------
*Stck: 00000000 0784991C 00009C40 078AB81C BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB
*Stck: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB 00000000 006B54E0 ABADCAFE
*PC-8: AAAA1111 247CAAAA 2222267C AAAA3333 287CAAAA 44442A7C AAAA5555 31C00000
*PC *: 522E0127 201433FC 400000DF F09A522E 012611C1 01004EAE FF7621C0 0104532E
*Name: "Shell" CLI: "NewTest:LawBreaker" Hunk 0000 Offset 0000007A
*
*LONG-READ from AAAA4444 PC: 0783AC6E
*USP: 078CAAEC SR: 0015 SW: 0749 (U0)(F)(-) TCB: 078AADF8
*Data: DDDD0000 DDDD1111 DDDD2222 DDDD3333 DDDD4444 DDDD5555 DDDD6666 DDDD7777
*Addr: AAAA0000 AAAA1111 AAAA2222 AAAA3333 AAAA4444 AAAA5555 07800804 --------
*Stck: 00000000 0784991C 00009C40 078AB81C BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB
*Stck: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB 00000000 006B54E0 ABADCAFE
*PC-8: 247CAAAA 2222267C AAAA3333 287CAAAA 44442A7C AAAA5555 31C00000 522E0127
*PC *: 201433FC 400000DF F09A522E 012611C1 01004EAE FF7621C0 0104532E 01266C08
*Name: "Shell" CLI: "NewTest:LawBreaker" Hunk 0000 Offset 0000007E
*
*BYTE-WRITE to 00000100 data=11 PC: 0783AC80
*USP: 078CAAEC SR: 0010 SW: 0711 (U0)(F)(D) TCB: 078AADF8
*Data: 00000000 DDDD1111 DDDD2222 DDDD3333 DDDD4444 DDDD5555 DDDD6666 DDDD7777
*Addr: AAAA0000 AAAA1111 AAAA2222 AAAA3333 AAAA4444 AAAA5555 07800804 --------
*Stck: 00000000 0784991C 00009C40 078AB81C BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB
*Stck: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB 00000000 006B54E0 ABADCAFE
*PC-8: 2A7CAAAA 555531C0 0000522E 01272014 33FC4000 00DFF09A 522E0126 11C10100
*PC *: 4EAEFF76 21C00104 532E0126 6C0833FC C00000DF F09A201F 66024E75 22404EEE
*Name: "Shell" CLI: "NewTest:LawBreaker" Hunk 0000 Offset 00000090
*
*LONG-WRITE to 00000104 data=00000000 PC: 0783AC88
*USP: 078CAAEC SR: 0014 SW: 0709 (U0)(-)(D) TCB: 078AADF8
*Data: 00000000 DDDD1111 DDDD2222 DDDD3333 DDDD4444 DDDD5555 DDDD6666 DDDD7777
*Addr: AAAA0000 AAAA1111 AAAA2222 AAAA3333 AAAA4444 AAAA5555 07800804 --------
*Stck: 00000000 0784991C 00009C40 078AB81C BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB
*Stck: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB 00000000 006B54E0 ABADCAFE
*PC-8: 0000522E 01272014 33FC4000 00DFF09A 522E0126 11C10100 4EAEFF76 21C00104
*PC *: 532E0126 6C0833FC C00000DF F09A201F 66024E75 22404EEE FE860024 5645523A
*Name: "Shell" CLI: "NewTest:LawBreaker" Hunk 0000 Offset 00000098
*
* NOTES
* If enforcer is not running, the program should not cause the
* system to crash. It will, however, write to certain areas
* of low memory. Also, it will cause read access of some
* addresses that may not exist. This may cause bus faults.
*
* SEE ALSO
* "Quantum Physics: The Dreams that Stuff is made of." - Michael Sinz
*
* BUGS
* There are 4 known Enforcer hits in this code, however, they
* will not be fixed. ;^)
*
*******************************************************************************
*
INCLUDE "exec/types.i"
INCLUDE "exec/execbase.i"
INCLUDE "exec/macros.i"
INCLUDE "dos/dosextens.i"
*
*******************************************************************************
*
* The main code...
*
LawBreaker: move.l 4.w,a6 ; Get ExecBase...
clr.l -(sp) ; Clear the message pointer...
move.l ThisTask(a6),a4 ; Get our process pointer...
tst.l pr_CLI(a4) ; Are we a CLI?
bne.s Do_Law ; If NULL, we are a WB run program...
*
* Handle Workbench Startup...
*
lea pr_MsgPort(a4),a4 ; Get message port...
move.l a4,a0 ; We first wait for the WB Startup MSG
JSRLIB WaitPort ; (it should be here very quickly)
move.l a4,a0 ; Now we get the message...
JSRLIB GetMsg ; Get it...
move.l d0,(sp) ; Now, store it on the stack...
*
* Ok, now be nasty...
*
* First fill up the registers with patterns
*
Do_Law: move.l #$DDDD0000,d0
move.l #$DDDD1111,d1
move.l #$DDDD2222,d2
move.l #$DDDD3333,d3
move.l #$DDDD4444,d4
move.l #$DDDD5555,d5
move.l #$DDDD6666,d6
move.l #$DDDD7777,d7
move.l #$AAAA0000,a0
move.l #$AAAA1111,a1
move.l #$AAAA2222,a2
move.l #$AAAA3333,a3
move.l #$AAAA4444,a4
move.l #$AAAA5555,a5
*
move.w d0,$0000 ; Ping location 0 (to 0)
JSRLIB Forbid
move.l (a4),d0 ; Ping another spot
JSRLIB Disable
move.b d1,$0101 ; Ping one more...
JSRLIB Permit
move.l d0,$0102 ; One last one...
JSRLIB Enable
*
* Ok, so now we quit...
*
move.l (sp)+,d0 ; Get message...
beq.s Done ; If we have one, do WB exit...
*
* We have a Workbench message, so reply it...
*
JSRLIB Forbid ; We need to FORBID for a bit...
move.l d0,a1 ; Get message into register
JSRLIB ReplyMsg ; Reply the workbench message...
*
Done: rts ; Return with NULL...
*
*******************************************************************************
*
* The version string...
*
INCLUDE "lawbreaker_rev.i"
VERSTAG
*
*******************************************************************************
*
* "A master's secrets are only as good as the
* master's ability to explain them to others." - Michael Sinz
*
*******************************************************************************
*
END